﻿using System;
using System.Diagnostics;
using Terraria.Net;
using Terraria.Net.Sockets;

namespace Terraria.Social.Base
{
	// Token: 0x02000146 RID: 326
	public abstract class NetSocialModule : ISocialModule
	{
		// Token: 0x06000DBE RID: 3518
		public abstract void Initialize();

		// Token: 0x06000DBF RID: 3519
		public abstract void Shutdown();

		// Token: 0x06000DC0 RID: 3520
		public abstract void Close(RemoteAddress address);

		// Token: 0x06000DC1 RID: 3521
		public abstract bool IsConnected(RemoteAddress address);

		// Token: 0x06000DC2 RID: 3522
		public abstract void Connect(RemoteAddress address);

		// Token: 0x06000DC3 RID: 3523
		public abstract bool Send(RemoteAddress address, byte[] data, int length);

		// Token: 0x06000DC4 RID: 3524
		public abstract int Receive(RemoteAddress address, byte[] data, int offset, int length);

		// Token: 0x06000DC5 RID: 3525
		public abstract bool IsDataAvailable(RemoteAddress address);

		// Token: 0x06000DC6 RID: 3526
		public abstract void LaunchLocalServer(Process process, ServerMode mode);

		// Token: 0x06000DC7 RID: 3527
		public abstract bool CanInvite();

		// Token: 0x06000DC8 RID: 3528
		public abstract void OpenInviteInterface();

		// Token: 0x06000DC9 RID: 3529
		public abstract void CancelJoin();

		// Token: 0x06000DCA RID: 3530
		public abstract bool StartListening(SocketConnectionAccepted callback);

		// Token: 0x06000DCB RID: 3531
		public abstract void StopListening();

		// Token: 0x06000DCC RID: 3532
		public abstract ulong GetLobbyId();
	}
}
